'''
2-6 模拟实际运用
给程序输入一张图，让程序来判断是猫还是狗
'''
import torch
import numpy as np
import cv2 as cv
net = torch.load('net.pkl') #载入训练好的网络
img = cv.imread('OIP-C.jpg')  # 读取图像
img0 = cv.resize(img,(128,128))         #更改图像尺寸
x = np.zeros(128*128*3)                 #新建空白输入
x = np.reshape(x,(1,3,128,128))         #调整成输入规格的维度
x[0, 0, :, :] = img0[:, :, 0] / 255
x[0, 1, :, :] = img0[:, :, 1] / 255
x[0, 2, :, :] = img0[:, :, 2] / 255     #赋值输入并进行归一化处理，x一定不能少第一个维度，即使这里的样本数量是1
x = torch.tensor(x).type(torch.FloatTensor)
y = net(x)            #输入网络得到结果
max_num = torch.max(y,1)[1]            #返回最大值下标

if max_num == 0:
    print('识别结果：图像中是猫')
    str = 'cat'
else:
    print('识别结果：图像中是狗')
    str = 'dog'

cv.imshow(f'{str}',img)
cv.waitKey(0)